package demo;
class Animal{
    public String name;
    public Animal(String name){//父类的构造方法帮助父类成员初始化
        this.name = name;
    }
}

class Duck extends Animal implements IFly,IRuning,ISwim{
    //duck类继承Animal类同时实现了三个接口，解决了java中多继承的问题
    @Override
    //重写不同接口中的方法来实现不同的功能
    public void fly() {
        System.out.println(this.name + "正在天上飞！");
    }

    @Override
    public void Iswim() {
        System.out.println(this.name + "正在水上游泳！");

    }

    @Override
    public void run() {
        System.out.println(this.name + "正在地上跑！");
    }

    //子类构造方法，在实现子类对象时会先调用父类的构造方法
    //在给实现子类的构造方法前，先要用super()调用实现父类的构造方法，比较先有父后有子呀！
    //因为父类自己定义了构造方法，编译器不会自动给给子类构造方法中添加super();
    // 来实现父类的构造方法，需要我们自己实现
    public Duck(String name){
        super(name);
    }
}
interface IFly{//三个接口，对应三种不同的行为
    void fly();
}

interface ISwim{
    void Iswim();
}
interface IRuning{
    void run();
}


public class Test2 {
    public static void main(String[] args) {
        Duck duck = new Duck("丑小鸭");
        duck.fly();
        duck.run();
        duck.Iswim();

    }
}
